Python按页拆分Word文档

因工作上需要,将word文档进行拆分分别找了Python和Java的解决方案,其中Java版本使用

Spire.Doc库(Spire.Doc for Java 中文教程),只能按照段落去拆分文档。代码分享如下:

Python版本

# coding: utf-8
import win32com
from win32com.client import Dispatch, DispatchEx
import os

def copy_doc(doc, page_no):
    try:
        doc_add = word.Documents.Add()
        newFile = 'test_new%d.docx' % page_no
        doc_add.SaveAs(os.path.abspath(newFile)) # 创建新文件
        doc_new = word.Documents.Open(os.path.abspath(newFile))
        # 页对象
        pages = doc.ActiveWindow.Panes(1).Pages.Count
        if page_no > pages:
            print("指定页索引超出已有页面")
        else:
            objRectangles = doc.ActiveWindow.Panes(1).Pages(page_no).Rectangles
            for i in range(objRectangles.Count):
                objRectangles.Item(i+1).Range.Copy()
                doc_new.Range(doc_new.Content.End - 1,doc_new.Content.End - 1).Paste()
        doc_new.Save()
        doc_new.Close()
    except Exception as e:
        print(e)

word = Dispatch('Word.Application') # 打开word应用程序
try:
    word.Visible = 0 # 后台运行,不显示
    word.DisplayAlerts = 0 # 不警告
    path = os.path.abspath('D:\\tmp\\sample.docx') # word文件路径
    doc = word.Documents.Open(FileName=path)
    # 页对象
    pages = doc.ActiveWindow.Panes(1).Pages.Count
    for i in range(1,pages + 1):
        copy_doc(doc, i)
    doc.Close()
except Exception as e:
    print(e)
finally:
    word.Quit

Java版本

import com.spire.doc.Bookmark;
import com.spire.doc.Document;
import com.spire.doc.collections.BookmarkCollection;

public class Main {
    public static void main(String[] args) {
        //加载Word文档
        Document doc = new Document();
        doc.loadFromFile("D:\\tmp\\2.docx");

        //声明新的Document对象
        Document newWord;
        int pageCount = doc.getPageCount();
        //遍历源文档中的节
        for (int i = 0; i < doc.getSections().getCount(); i++) {
            //初始化新的Document对象
            newWord = new Document();

            //将源文档中的指定节复制到新文档
            newWord.getSections().add(doc.getSections().get(i).deepClone());

            //保存新文档到指定文件夹
            newWord.saveToFile(String.format("拆分结果-%d.docx", i));
        }
    }
}

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值